The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent the work is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.
Signals transmitted and received in Gaussian frequency shift keying (GFSK) communication systems (e.g., a Bluetooth network) include a sequence of symbols corresponding to data packets. A device operating in the Bluetooth network includes a receiver (or a transceiver) that receives, for example only, basic data rate (BDR) signals, enhanced data rate (EDR) signals, and/or Bluetooth low energy (BLE) signals including symbols of a corresponding type of data packets. The receiver generally includes a maximum-likelihood decoder such as a Viterbi decoder.
The Viterbi decoder implements a Viterbi algorithm to decode a bitstream (e.g. of data packets) represented by the symbols. For example, a twelve state Viterbi decoder implementing a corresponding twelve state trellis may be used to decode BDR packets. Conversely, an eight state Viterbi decoder implementing an eight state trellis may be used to decode BLE packets. Each state of a corresponding one of the trellises is associated with two branch metrics and respective correlators. The branch metrics correspond to two possible next states (i.e., for respective next bits/symbols). For example, in a twelve state Viterbi decoder, the two branch metrics for each possible current state (i.e., a current bit/symbol) point to two different possible next states out of the remaining eleven states. Conversely, in an eight state Viterbi decoder, the two branch metrics of each current state point to two different possible next state out of the remaining seven states.
The Viterbi decoder correlates the received signal, over the duration of a symbol, to all possible signals using the corresponding trellis to generate correlation values for each branch metric. Accordingly, for a current state, a twelve state Viterbi decoder calculates correlation values for 24 (i.e., two per state) branch metrics and an eight state Viterbi decoder calculates correlation values for 16 branch metrics. Each correlation value corresponds to one of the branch metrics between the current state (a state of a current bit/symbol) and a next state (a state of a next bit/symbol).
Two of the branch metrics point to each subsequent state. Accordingly, each subsequent state has two branch metrics terminating at the subsequent state. Further, each subsequent state has two associated cost metrics. A first cost metric corresponds to a sum of one of the branch metrics (i.e., a first branch metric) terminating at the state and a cost metric of the state the first branch metric originated from. A second cost metric corresponds to a sum of the other of the branch metrics (i.e., a second branch metric) terminating at the state and a cost metric of the state the second branch metric originated from. The greater of the first cost metric and the second cost metric is the cost metric for the subsequent state. In other words, the cost metric having the greater magnitude corresponds to the most likely path (i.e., the path having the maximum likelihood) to the subsequent state.
The cost metric of each subsequent state is calculated after receiving a corresponding symbol. In other words, branch metrics pointing from a first state to a second state are associated with decoding a first received symbol, and branch metrics pointing from the second state to a third state are associated with decoding a second received symbol. After a predetermined number of symbols are received and the corresponding cost metrics for the latest state are calculated (i.e., a traceback depth is reached), the Viterbi decoder selects the latest state having the greatest cost metric, and each previous state having the greatest cost metric in a path leading to the selected state (i.e., a survivor path). The survivor path represents the decoded bits corresponding to the predetermined number of symbols. Each transition from one state to another in a twelve state Viterbi decoder involves calculating and storing correlation values for 24 branch metrics. Conversely, each transition from one state to another in an eight state Viterbi decoder involves calculating and storing correlation values for 16 branch metrics.
Each of BDR signaling and BLE signaling include continuous phase modulated (CPM) signaling. A transmitted CPM signal for a time t, where nT<t<(n+1)T, and T is a symbol duration (e.g., 1 μs for BDR and BLE signaling) can be represented as x(t)=e−j(θn+InQ(t−nT)+In−1Q(t−(n−1)T)), where In is the nth bit transmitted, In−1 is the (n−1)th bit transmitted, θn is an accumulated phase angle prior to transmission of the nth bit, where θn=θn−1+In−2hπn, and h corresponds to a modulation index (e.g., π/3 for BDR signaling and π/2 for BLE signaling). An ideal signal corresponding to the transmitted signal can be represented as ej(θn+InQ(t)+In−1Q(t+T)). For Q(t), Q(t)=2πh∫0tg(t)dt, and g(t), a Gaussian pulse shaping filter, can be represented as
                              g          ⁡                      (            t            )                          =                                            π                        α                    ⁢                      ⅇ                          -                                                (                                                            π                      ⁢                                                                                          ⁢                      t                                        α                                    )                                2                                                        ,                          ⁢      where        ⁢                            α      =                                                  ln              ⁢                                                          ⁢              2                                            2                          ⁢                  T          BT                      ,  and B corresponds to 3 dB bandwidth. For example only, for BDR and BLE signaling, 3 dB bandwidth is 500 KHz.
Accordingly, for BDR and BLE signaling, each current state of the Viterbi decoder and corresponding trellis is represented by both an accumulated angle θn (e.g., a multiple of the modulation index π/3 or π/2) and an (n−1)th bit In−1, or (θn, In−1). Each next state of the Viterbi decoder and trellis is represented by a next accumulated angle value θn+1 and the nth bit, or (θn+1, In). The bits in BDR and BLE signaling correspond to 1 or −1. An example twelve state trellis 100 corresponding to BDR signaling is shown in FIG. 1A. An example eight state trellis 104 corresponding to BLE signaling is shown in FIG. 1B.